package com.ys.erp.stage_emp_service.service;

import com.ys.erp.framework.bean.dto.StageEmpDTO;
import com.ys.erp.framework.response.PageDTO;
import com.ys.erp.stage_emp_service.bean.conditon.EmpCondition;
import com.ys.erp.stage_emp_service.bean.vo.EmpLoginVO;
import com.ys.erp.stage_emp_service.bean.vo.EmpShopInfoVO;
import com.ys.erp.stage_emp_service.bean.vo.EmployeeVo;
import com.ys.erp.stage_emp_service.bean.vo.ShopInfoVO;
import jakarta.validation.Valid;

import java.util.List;

/**
 * @author 南山
 * @date 2025/07/25 16:03
 */
public interface EmpService {

    /**
     * 员工登录
     *
     * @param con 登录条件
     * @return 登录信息
     */
    EmpLoginVO empLogin(EmpCondition.@Valid EmpLoginCondition con);

    /**
     * 获取员工店铺信息列表
     *
     * @param empDto 员工信息
     * @return 店铺信息列表
     */
    List<ShopInfoVO> getEmpShopInfoList(StageEmpDTO empDto);

    /**
     * 员工选择店铺
     *
     * @param empDto   员工信息
     * @param shopCode 店铺编码
     * @return 店铺信息
     */
    EmpShopInfoVO chooseShop(StageEmpDTO empDto, String shopCode);


    /**
     * 获取员工店铺列表
     *
     * @param empDto 员工信息
     * @param empId  员工id
     * @return 店铺列表
     */
    List<ShopInfoVO> getEmpShopList(StageEmpDTO empDto, Long empId);

    /**
     * 员工设置店铺
     *
     * @param empDto 员工信息
     * @param con    店铺设置条件
     */
    void empSettingShop(StageEmpDTO empDto, EmpCondition.EmpSettingShopCon con);

    /**
     * 分页员工列表
     *
     * @param pageEmployeeCon 分页员工列表条件
     * @return 员工列表
     */

    PageDTO<EmployeeVo> pageEmp(StageEmpDTO empDto, EmpCondition.@Valid PageEmployeeCon pageEmployeeCon);

    void addOrUpdateEmployee(StageEmpDTO empDto, EmpCondition.@Valid AddOrUpdateEmpCon con);
}
